iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Modern Web

使用 Clojure 當個 Full-stack 開發者系列 第 14

[Day 14] 不只是語法,原理才是核心

  • 分享至 

  • xImage
  •  

藉由這次開始開始使用更多的講一些使用lib以及常用的core api
(雖然前幾天也是直接丟了一堆lib,也沒有特別介紹XDDD)

從前幾天開始,都是講原理,其實使用lib也都是原理,只不過表達換成clojure的表達式而已

搞清楚背後的邏輯,換任何一套語言都可以很快上手,這邊就不論每個人對語言的喜好了XDD

拉回今天的主題,從昨天的buddy繼續開始吧

今天就來幫我們的使用者的密碼加鹽,然後分享我怎麼查資料

加鹽使用buddy-hashers,而且人家文件寫的很好

今天文件上有很多的演算法供我使用,所以我想動態的針對每個user配對

(defn derive-options []
    (-> #{:bcrypt+blake2b-512 :bcrypt+sha384
          :pbkdf2+blake2b-512 :pbkdf2+sha512
          :pbkdf2+sha3_256 :pbkdf2+sha1}
        shuffle
        first))

#{...} 是 vec 的意思

所以一般看這段就是有個vec,洗一洗,取第一個

當然,這只是其中一種寫法,如果有順便玩4clojure的小測驗就熟悉了

都是跟leetcode一樣,給你一段描述,你想個演算法出來做到要的結果

再來就是我開發上常用的 let (let [] ...)

(let [pwd "hi"
    derived-pwd (hashers/derive pwd {:alg (derive-options)})
    result (hashers/verify pwd derived-pwd)]
    (prn result))

這邊將我需要的變數都準備好(req那邊應該也滿有印象的吧)

然後一路執行,中間如果想要debug或需要修改,可以參考這些招式

接著repl看結果或確認使用方式,clojure都是immutable的,所以也不用擔心東西會被改壞,只怕你沒有去改

java的部分就是進入javadoc慢慢看了,不過這次不會

接下來幾天應該就會進入core api,使用哪些簡單的組合就能解決大部分的需求


上一篇
[Day 13] 當Framework不再是你的庇護所
下一篇
[Day 15] 常用語法介紹(一)
系列文
使用 Clojure 當個 Full-stack 開發者30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言